gusucode.com > VC++ RingSDK界面库 > VC++ RingSDK界面库/code/libsrc/ringdows/ringcheckbox.cpp

    /**********************************************************************
//							临风程序界面类库 ringdows.lib
//作者:临风
//
//版本:0.1
//
//声明:本类库可以自由使用而不须对作者作出任何回报,但作者希望能得到
//		  你的鼓励和支持。你可以对类库源码作出修改和改进,但希望你能在
//		  修改的同时给作者一份同样的副本。
//		  本类库不得用于任何商业用途,如确实需要,请与作者联系。
//
//e-mail:ringphone@sina.com
//
//原文件名:edit.cpp
//
//说明:Edit控件控制
//
**********************************************************************/
/*
#define MAKE_SELF_LIB
#include "ringdows.h"

RingCHECKBOX::RingCHECKBOX(HWND hParent,UINT uId)
{
	m_hParent = hParent;
   m_TimerCnt ++;
   timerId = m_TimerCnt;
   currStyle = EDITSTYLE_FLAT;
   bTimerSetted = FALSE;
   m_preProc = NULL;

   if(uId != 0)
   {
   	m_hWnd = GetDlgItem(hParent,uId);
      m_ID = uId;
      if(RegCtrl(m_hWnd))
      {
	      m_preProc = (WNDPROC)GetWindowLong(m_hWnd,GWL_WNDPROC);
   		SetWindowLong(m_hWnd,GWL_WNDPROC,(LONG)RingControls::RingCtrlProc);
      }
   }
}

RingCHECKBOX::~RingCHECKBOX()
{
   KillTimer(m_hWnd,timerId);
   if(m_preProc != NULL)
		SetWindowLong(m_hWnd,GWL_WNDPROC,(LONG)m_preProc);
}

BOOL RingCHECKBOX::Create(LPCTSTR szCaption,DWORD dwStyle,int x,int y,int width,int height)
{
	m_hWnd = CreateWindow("edit",szCaption,
									WS_CHILD | WS_VISIBLE | dwStyle,
									x,y,width,height,
									m_hParent,
									(HMENU)m_ID,
									m_hInst,NULL);

   if(RegCtrl(m_hWnd))
   {
      m_preProc = (WNDPROC)GetWindowLong(m_hWnd,GWL_WNDPROC);
  		SetWindowLong(m_hWnd,GWL_WNDPROC,(LONG)RingControls::RingCtrlProc);
      return TRUE;
   }
   return FALSE;
}

LRESULT WINAPI RingCHECKBOX::DefCtrlProc(HWND hWnd,UINT uMsg,UINT wParam,LONG lParam)
{
	switch(uMsg)
   {
      case WM_NCPAINT:
      {
         if(!bPainted)
         {
				GetWindowRect(hWnd,&rcItem);

            rcItem.right -= (rcItem.left);
  	      	rcItem.left = 0;
	     	   rcItem.bottom -= (rcItem.top);
   	     	rcItem.top = 0;

            hDC = GetWindowDC(hWnd);
            if(currStyle == EDITSTYLE_FLAT)
            {
              	hpen = CreatePen(PS_SOLID,1,m_crSys.crBTNFACE);
		         SelectObject(hDC,hpen);
   		      SelectObject(hDC,GetStockObject(NULL_BRUSH));
      		   Rectangle(hDC,rcItem.left,rcItem.top,rcItem.right,rcItem.bottom);
	         	DeleteObject(hpen);
            }
            else
         		DrawEdge(hDC,&rcItem,BDR_SUNKENOUTER,BF_RECT);

            ReleaseDC(hWnd,hDC);
            bPainted = TRUE;
      	}
      	return 0;
      }
      case WM_MOUSEMOVE:
         if(!bTimerSetted)
         {
         	SetTimer(hWnd,timerId,10,NULL);
            bTimerSetted = TRUE;
         }
      	return m_preProc(hWnd,uMsg,wParam,lParam);
      case WM_SETFOCUS:
			bLocked = TRUE;
			return m_preProc(hWnd,uMsg,wParam,lParam);
      case WM_KILLFOCUS:
      	bLocked = FALSE;
         SendMessage(hWnd,WM_NCPAINT,0,0);
         return m_preProc(hWnd,uMsg,wParam,lParam);
      case WM_TIMER:
      {
         GetWindowRect(hWnd,&rcItem);
         GetCursorPos(&pt);
         if(PtInRect(&rcItem,pt))
         {
         	if(currStyle == EDITSTYLE_FLAT)
            {
            	bPainted = FALSE;
               currStyle = EDITSTYLE_NORMAL;
               SendMessage(hWnd,WM_NCPAINT,0,0);
               return 0;
            }
         }
         else
         {
         	if(!bLocked && currStyle == EDITSTYLE_NORMAL)
	         {
            	bPainted = FALSE;
               currStyle = EDITSTYLE_FLAT;
               SendMessage(hWnd,WM_NCPAINT,0,0);
               return 0;
            }
            else if(bLocked && currStyle == EDITSTYLE_FLAT)
	         {
            	bPainted = FALSE;
               currStyle = EDITSTYLE_NORMAL;
               SendMessage(hWnd,WM_NCPAINT,0,0);
               return 0;
            }
         }
         return 0;
      }
      default:
         return m_preProc(hWnd,uMsg,wParam,lParam);
   }
}
*/